#include <iostream>
#include <thread>

// std::thread：表示一个线程，可以创建、启动、等待和销毁线程。
// std::this_thread：提供了一些静态成员函数，用于操作当前线程。
// std::thread::id：线程的唯一标识符。/
void print_id(int id)
{
    std::thread::id this_id = std::this_thread::get_id();
    std::cout << "ID: " << id << ", Thread ID: " << this_id << std::endl;
}

int main()
{
    // 创建 std::thread 对象后，线程会立即开始执行，
    std::thread t1(print_id, 1);
    std::thread t2(print_id, 2);
    // join() 方法会阻塞当前线程，直到被调用的线程完成执行
    t1.join();
    t2.join();
    // std::thread 对象要么 join()，要么 detach()，且只能调用一次
    // t1.detach();
    return 0;
}
// join(): 等待线程结束。
// detach(): 将线程置于后台运行，不再等待线程结束。
// joinable(): 检查线程是否可被 join 或 detach。